const path = require('path')
const webpack = require('webpack')
const {merge} = require('webpack-merge')
const common = require('./webpack.common.js')
const TerserPlugin = require('terser-webpack-plugin')  // 压缩js
const MiniCssExtractPlugin = require('mini-css-extract-plugin') 
const { CleanWebpackPlugin } = require('clean-webpack-plugin')   // 清除文件


module.exports = merge(common, {
    mode: 'production',
    devtool: 'source-map',   //	生成一个SourceMap文件. 
    entry: './src/index.js',
    output: {
      path: path.resolve(__dirname, 'dist/enhance-ui'),
      filename: 'index.js',
      // webpack默认打包的代码是一个立即执行函数，外界无法获取函数里面的返回值，此时就需要library来解决，支持script、import、require
      // libraryTarget：umd,暴露为所有的模块定义下都可运行的方式
      libraryTarget: 'umd', // 尝试把库暴露给前使用的模块定义系统，这使其和CommonJS、AMD兼容或者暴露为全局变量
      library: {
        root: 'EnhanceUi',
        amd: 'enhance-ui',
        commonjs: 'enhance-ui'
      }
    },
    plugins: [
      new CleanWebpackPlugin(),
      new TerserPlugin({
        parallel: true,
        terserOptions: {
          ecma: 6,
        },
      }),
      // 将less、scss、css文件都放在一个这个文件里，
      new MiniCssExtractPlugin({
        filename: 'enhance-ui.min.css'
      }),
      new webpack.DefinePlugin({
        'process.env.NODE_ENV': JSON.stringify('production')
      })
    ]
  })
  